package cn.qzit;

import cn.qzit.entity.Animal;
import cn.qzit.entity.Cat;
import cn.qzit.entity.Dog;

/**
 * ClassName : cn.qzit.Debugger
 * Desc : TODO
 *
 * @author : 不立FLAG会死星人の林鹏群....
 * @date : 2022/4/27 10:43
 */
public class Debugger {

    public static void main(String[] args) {
        testZero();
    }

    /**
     * 1、普普通通的Debug：请用debug模式查看s等于多少;
     * 温馨提示：行断点
     */

    public static void testZero(){
        int a = 5;
        int b = 6;
        int s = a + b;  //s=11
    }




    /**
     * 1、请使用Debug方式，获取当i==100时候 s的值，不允许添加任何一行代码    s=5151
     * 2、请问循环多少次后，s==2045253，依旧不允许添加任何代码      i=2022
     * 温馨提示：详细断点
     */
    public static void testOne(){

        double[] a = new double[10000];

        int s = 0;
        for (int i = 0; i < a.length; i++) {
            a[i] = i+1;
            s+=a[i];
        }
    }

    /**
     * 1、假设你 a 对象是外部传入，你仅仅只是知道是Animal，请问如何在hello中断点
     * 特别要求：不允许在该方法打断点；并且仅打一次断点；
     * 温馨提示：方法断点
     */
    public static void testTwo(){
        Animal a = new Cat();
        a.hello();
    }

    /**
     * 1、当全局代码出现异常，例如空指针异常，如何快速定位。
     * 特别要求：一个系统中所有代码都有可能出现异常，如何一次性直接定位
     * 温馨提示：异常断点
     */
    public static void testThree(){
        Cat cat = null;
        cat.hello();
        Cat cat2 = null;
        cat2.hello();
        Cat cat3 = null;
        cat3.hello();
    }

    /**
     * 1、如何定位某个属性每次变化的情况
     * 温馨提示：属性断点
     */
    public static void testFour(){
        Dog dog = new Dog("旺财");
        System.out.println("hello");
        Dog dog1 = new Dog();
        System.out.println("hello");
        dog.setName("招财");
    }
}
